package tr.edu.metu.is.mega.client.service;

import java.util.List;

import tr.edu.metu.is.mega.common.dto.ScheduleTemplateDTO;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Async interface of {@link GwtScheduleService}
 */
public interface GwtScheduleServiceAsync {

    /**
     * @see GwtScheduleService#createSchedule(ScheduleTemplateDTO)
     */
    void createSchedule(ScheduleTemplateDTO scheduleTemplate, AsyncCallback<ScheduleTemplateDTO> callback);

    /**
     * @see GwtScheduleService#updateSchedule(ScheduleTemplateDTO)
     */
    void updateSchedule(ScheduleTemplateDTO scheduleTemplate, AsyncCallback<ScheduleTemplateDTO> callback);

    /**
     * @see GwtScheduleService#deleteSchedule(ScheduleTemplateDTO)
     */
    void deleteSchedule(ScheduleTemplateDTO scheduleTemplate, AsyncCallback<Void> callback);

    /**
     * @see GwtScheduleService#getScheduleTemplates()
     */
    void getScheduleTemplates(AsyncCallback<List<ScheduleTemplateDTO>> callback);

}
